package anlage;

import java.awt.Graphics;
import java.util.Timer;

import javax.swing.JOptionPane;

import steuerung.Ablaufsteuerung;
import steuerung.Config;
import steuerung.GleisSetzTask;
import verbindung.DBDSingleton;

/**
 * 
 * @author Nilientes
 * 
 */
public class Geschwindigkeitsmesser extends AnlageObjekt {

	/**
	 * 
	 * @param steuerung
	 * @param id
	 * @param varsoll
	 * @param varist
	 * @param belegt
	 */

	private int ignoreachsen;

	public Geschwindigkeitsmesser(Ablaufsteuerung steuerung, int id, String varsoll, String varist, String belegt) {
		super(steuerung, id, varsoll, varist, belegt);

		DBDSingleton.getClient().subscribeVar(varist, this);
	}

	@Override
	public void paint(Graphics g, int x, int y)
	{
		super.paint(g, x, y);;
	}

	@Override
	public void call(String var, int value)
	{
		if (var.equals(varist.toUpperCase()) && value > 0) {
			if (this.steuerung.getStatus() == Ablaufsteuerung.AEIN || this.steuerung.getStatus() == Ablaufsteuerung.ASTP) {

				// nur die erste achse eines wagens wird gemessen, alle
				// folgenden ignoriert
				if (ignoreachsen == 0) {
					steuerung.wagenGeschwindigkeit();
					
					GleisSetzTask gst = steuerung.erstelleNeuenTask();
					if (gst != null) {
						Timer t = new Timer();
						t.schedule(gst, (int) (((double) Config.distToRichtung*1000.) / (double) value));
					}
					ignoreachsen = steuerung.getIgnoreAchsen();
					
				}

				ignoreachsen--;
			} else {
				JOptionPane.showMessageDialog(steuerung.ass, "Es findet ein Ablauf ohne Automatik-EIN statt", "Hinweis", JOptionPane.PLAIN_MESSAGE);
			}
		}

		super.call(var, value);
	}

}
